#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
#include <cmath>
#define pii pair <double, double>
#define mp0 make_pair(0, 0)
#define eps 1e-7
using namespace std;
/* #ifdef ONLINE_JUDGE */

/* #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++) */
/* char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf; */

/* #endif */
/* int read() { */
	/* int p = 0, flg = 1; */
	/* char c = getchar(); */
	/* while (c < '0' || c > '9') { */
		/* if (c == '-') flg = -1; */
		/* c = getchar(); */
	/* } */
	/* while (c >= '0' && c <= '9') { */
		/* p = p * 10 + c - '0'; */
		/* c = getchar(); */
	/* } */
	/* return p * flg; */
/* } */
double read() {
	double p = 0, k = 1;
	char c = getchar();
	while (c < '0' || c > '9')
		c = getchar();
	while (c >= '0' && c <= '9') {
		p = p * 10 + c - '0';
		c = getchar();
	}
	if (c != '.') return p;
	c = getchar();
	while (c >= '0' && c <= '9') {
		k /= 10;
		p += k * (c - '0');
		c = getchar();
	}
	return p;
}
void write(int x) {
	if (x < 0) {
		x = -x;
		putchar('-');
	}
	if (x > 9) {
		write(x / 10);
	}
	putchar(x % 10 + '0');
}
const int N = 1e6 + 5;
array <pii, N> isl;
#define fi first
#define se second
double calc(pii a, pii b) {
	return sqrt((a.fi - b.fi) * (a.fi - b.fi) + (a.se - b.se) * (a.se - b.se));
}
bool cmp(pii a, pii b) {
	double tp1 = min(calc(make_pair(a.fi / 2, a.se), mp0),
					calc(make_pair(a.fi, a.se / 2), mp0)),
		   tp2 = min(calc(make_pair(b.fi / 2, b.se), mp0),
				    calc(make_pair(b.fi, b.se / 2), mp0));
	return tp1 > tp2;
}
double solve(double x, int n) {
	double ans1 = 0;
	for (int i = 1; i <= n; i++) {
		double kp = i / 2 + 0.5;
		double tp1 = calc(make_pair(calc(make_pair(isl[i].fi, isl[i].se / 2), mp0), kp), mp0),
			   tp2 = calc(make_pair(calc(make_pair(isl[i].fi / 2, isl[i].se), mp0), kp), mp0);
		ans1 = max(ans1, min(tp1, tp2));
	}
	double ans2 = 0;
	for (int i = 1; i <= n; i++) {
		double kp = (i + 1) / 2;
		double tp1 = calc(make_pair(calc(make_pair(isl[i].fi, isl[i].se / 2), mp0), kp), mp0),
			   tp2 = calc(make_pair(calc(make_pair(isl[i].fi / 2, isl[i].se), mp0), kp), mp0);
		ans2 = max(ans2, min(tp1, tp2));
	}
	return min(ans1, ans2);
}
int main() {
	freopen("temple.in", "r", stdin);
	freopen("temple.out", "w", stdout);
	int n = read();
	for (int i = 1; i <= n; i++) {
		isl[i].fi = read(), isl[i].se = read();
	}
	sort(isl.begin() + 1, isl.begin() + 1 + n, cmp);
	printf("%.8lf\n", solve(0, n));	
	/* swap(isl[1], isl[2]); */
	/* for (int i = 1; i <= n; i++) { */
		/* write(isl[i].fi), putchar(32); */
		/* write(isl[i].se), puts(""); */
	/* } */
	/* write(check(3.1, n)), puts(""); */
	/*
	exit(0);
	double l = 0, r = 1e7, ans;
	while (l < r - eps) {
		double mid = (l + r) / 2;
		printf("%.4lf %.4lf %.4lf ", l, r, mid);
		write(check(mid, n)), puts("");
		if (check(mid, n)) ans = mid, r = mid - eps;
		else l = mid + eps;
	}
	printf("%.4lf\n", ans);	
	*/
	return 0;
}
